from framework.Function.ModbusBasicFunction import function
from framework.Function.ModbusBasicFunction.function import *


#action words 控制台操作与全局参数相关

def restart():  # 重新启动 包含以下动作 ： 急停初始化复位(使能)启动
    stop()
    init()
    reset()
    function.start()
    assert read_reg_IntOrBool(101) == 1, " [程序状态错误:非预期的循环运行状态]"  # R101 程序状态1 循环运行状态


# 断使能 复位(使能)
def disable_enable():
    disable()
    assert read_reg_IntOrBool(101) == 3, " [程序状态错误:非预期的停止状态]"  # R101 程序状态3 停止状态
    reset()


# 急停
def Stop():
    stop()


# 开启试运行
def Trial_run_on():
    trial_run_on()


# 摆渡段马达回零
def Ferry_motor_to_zero():
    ferry_motor_to_zero()

# 启动
def Start():
    function.start()
    assert read_reg_IntOrBool(101) == 1, " [程序状态错误:非预期的循环运行状态]"  # R101 程序状态1 循环运行状态


# 暂停
def Pause():
    function.pause()
    assert read_reg_IntOrBool(101) == 2, " [程序状态错误:非预期的暂停状态]"  # R101 程序状态2 暂停状态


#初始化
def initial():
    stop()  # 为了确保初始化成功 必须先急停
    init()


# 初始化 + 复位
def initial_reset():
    init()
    reset()

# 程序模式切换  手动模式
def mode_switch_manual():
    read_status = read_reg_IntOrBool(100)
    if read_status == 1:
        switch_mode()  # 模式切换到手动模式
    elif read_status == 2:
        raise ValueError("系统状态错误 系统状态目前为上电巡检中")


# 程序模式切换  自动模式
def mode_switch_atuo():
    read_status = read_reg_IntOrBool(100)
    if read_status == 0:
        switch_mode()  # 模式切换到自动模式
    elif read_status == 2:
        raise ValueError("系统状态错误 系统状态目前为上电巡检中")
    switch_mode()
